#coding:utf-8
import pandas as pd
import csv
import numpy as np
from datetime import datetime
#读取文件


dou1=pd.read_excel(r'G:\工作\每日\抖音1.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str})
dou2=pd.read_excel(r'G:\工作\每日\抖音2.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str})
dou3=pd.read_excel(r'G:\工作\每日\抖音3.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str})
dou4=pd.read_excel(r'G:\工作\每日\抖音4.xlsx',dtype={'商品ID':str,'达人昵称':str,'选购商品':str})
'''
l1=pd.read_excel(r'G:\工作\每日\ID点击购买率_抖1.xlsx',dtype={'商品编码':str})
l2=pd.read_excel(r'G:\工作\每日\ID点击购买率_抖2.xlsx',dtype={'商品编码':str})

y1=pd.read_excel(r'G:\工作\每日\佣金1.xlsx')
y2=pd.read_excel(r'G:\工作\每日\佣金2.xlsx')
z1=pd.read_excel(r'G:\工作\每日\招商1.xlsx')
z2=pd.read_excel(r'G:\工作\每日\招商2.xlsx')
'''
#提取对应列

dou1_date=dou1.loc[:,['商品ID','选购商品','商家编码','商品数量','订单应付金额','订单状态','售后状态','流量来源','达人昵称','广告渠道','流量类型','流量渠道','流量体裁','订单提交时间','平台实际承担优惠金额','达人实际承担优惠金额']]
dou1_date['平台']='抖音1'

dou2_date=dou2.loc[:,['商品ID','选购商品','商家编码','商品数量','订单应付金额','订单状态','售后状态','流量来源','达人昵称','广告渠道','流量类型','流量渠道','流量体裁','订单提交时间','平台实际承担优惠金额','达人实际承担优惠金额']]
dou2_date['平台']='抖音2'

dou3_date=dou3.loc[:,['商品ID','选购商品','商家编码','商品数量','订单应付金额','订单状态','售后状态','流量来源','达人昵称','广告渠道','流量类型','流量渠道','流量体裁','订单提交时间','平台实际承担优惠金额','达人实际承担优惠金额']]
dou3_date['平台']='抖音3'

dou4_date=dou4.loc[:,['商品ID','选购商品','商家编码','商品数量','订单应付金额','订单状态','售后状态','流量来源','达人昵称','广告渠道','流量类型','流量渠道','流量体裁','订单提交时间','平台实际承担优惠金额','达人实际承担优惠金额']]
dou4_date['平台']='抖音4'

dou=pd.concat([dou1_date,dou2_date,dou3_date,dou4_date])

dou['订单应付金额加优惠']=dou['订单应付金额']+dou['平台实际承担优惠金额']+dou['达人实际承担优惠金额']
dou_date=dou.loc[:,['商品ID','选购商品','商家编码','商品数量','订单应付金额加优惠','订单状态','售后状态','订单应付金额加优惠','流量来源','达人昵称','广告渠道','流量类型','流量渠道','流量体裁','订单提交时间','平台']]
dou_date.columns=['商品ID','选购商品','商家编码','商品数量','订单应付金额','订单状态','售后状态','退款金额','流量来源','达人昵称','广告渠道','流量类型','流量渠道','流量体裁','订单提交时间','平台']

dou_date['订单提交时间']=pd.to_datetime(dou_date['订单提交时间'])
dou_date['日期']=dou_date['订单提交时间'].map(lambda x : datetime.date(x))
date_concat_s=dou_date[(dou_date['订单应付金额'] >= 0.01)]
date_concat_ss=date_concat_s[(date_concat_s['商家编码'] !='抖音直播间赠品')]
#['商家编码']去空格
date_concat_ss['商品ID']=date_concat_ss['商品ID'].str.strip()
date_concat_ss['商家编码']=date_concat_ss['商家编码'].str.strip()
date_concat_ss1=date_concat_ss.copy()


def  f(x,y,z,w,p): #x:选购商品 y:达人昵称 z:流量来源 w:广告渠道
    '''
    if 'zs2' in x  or ( 'zz' in x):
        return '代播'
    elif 'zs' in x:
        return '代播'
     
    elif y=='宛禾食品旗舰店直播间' or  y=='宛禾牛宅':
        return '代播'
    elif y=='宛禾速食旗舰店自播间'  or  y=='宛禾食品旗舰店自播间' or  y=='宛禾食品旗舰店速食直播间':
        return '代播'
    '''
    if y=='宛禾米线官方旗舰店' or ('z1' in x)  or ('Z1' in x) :
        return '自播间1.0'
    elif y=='宛禾米线速食官方旗舰店'  or y=='宛禾米线' or y=='宛禾速食官方旗舰店'  or y=='宛禾食品' or y=='宛禾速食直播间' or ('z3' in x)  or ('Z3' in x):
        return '自播间3.0'
    elif  ('wzm' in x) :
        return '窝子面直播间'
    elif y=='宛禾食品旗舰店' or ('z5' in x)  or ('Z5' in x):
        return '自播间5.0'
    elif y=='宛禾速食旗舰店' or y=='宛禾食品旗舰店甄选号'or ('z6' in x)  or ('Z6' in x):
        return '自播间6.0'
    elif y=='宛禾官方旗舰店' or ('z8' in x)  or ('Z8' in x):
        return '自播间8.0'
    elif y=='宛禾米线速食旗舰店' or ('lsf' in x)  :
        return '螺蛳土豆粉直播间'
    elif p=='抖音1' and ('dsp' in x) :
        return '自播间1.0'
    elif p=='抖音2' and ('dsp' in x) :
        return '自播间5.0'
    elif p=='抖音3' and ('dsp' in x) :
        return '自播间8.0'
    elif p=='抖音4' and ('dsp' in x) :
        return '螺蛳土豆粉直播间'
    elif pd.notnull(y):
        return '达人分发'
    elif z=='精选联盟':
        return '达人分发'
    elif w=='商品卡':
        return '超级商品卡'
    else:
        return '自然单'
date_concat_ss1['渠道']=list(map(f,list(date_concat_ss1['选购商品']),list(date_concat_ss1['达人昵称']),list(date_concat_ss1['流量来源']),list(date_concat_ss1['广告渠道']),list(date_concat_ss1['平台'])))
#筛选发货成功单
#fahuo=['已发货','部分发货','待发货','已完成','已支付','待配货','等待确认收货','交易成功','卖家已发货，等待买家确认','已发货，待签收','已发货未签收','已签收','买家已付款，等待卖家发货','等待出库','(锁定)等待确认收货','完成']
#tuikuan=['退款成功','退款完成','已全额退款','(锁定)等待确认收货','(删除)等待出库','(删除)等待确认收货','售后完成']
date_concat_sss=date_concat_ss[(date_concat_ss['订单状态'] == '已发货')|(date_concat_ss['订单状态'] =='部分发货')|(date_concat_ss['订单状态'] =='待发货')|(date_concat_ss['订单状态'] =='已完成')|(date_concat_ss['订单状态'] =='已支付')]
date_concat_sss=date_concat_sss[(date_concat_sss['售后状态'] != '退款成功')&(date_concat_sss['售后状态'] !='退款完成')&(date_concat_sss['售后状态'] !='已全额退款')&(date_concat_sss['售后状态'] !='(锁定)等待确认收货')&(date_concat_sss['售后状态'] !='(删除)等待出库')&(date_concat_sss['售后状态'] !='(删除)等待确认收货')&(date_concat_sss['售后状态'] !='售后完成')]
#date_concat_sss=date_concat_ss[(date_concat_ss['订单状态'].any() in fahuo)]
#date_concat_sss=date_concat_ss[(date_concat_ss['售后状态'].any() not in tuikuan)]
#date_concat_sss.to_excel(r'G:\结果\链接表销售额_1.xlsx')
#筛选退款单
date_concat_td=date_concat_ss1[(date_concat_ss1['售后状态'] == '退款成功')|(date_concat_ss1['售后状态'] =='退款完成')|(date_concat_ss1['售后状态'] =='已全额退款')]
#date_concat_td=date_concat_ss[(date_concat_ss['售后状态'].any() not in tuikuan)]
#各渠道单量，销售额
#抖音各渠道销售情况
date_concat_sss1=date_concat_ss1[(date_concat_ss1['订单状态'] == '已发货')|(date_concat_ss1['订单状态'] =='部分发货')|(date_concat_ss1['订单状态'] =='待发货')|(date_concat_ss1['订单状态'] =='已完成')|(date_concat_ss1['订单状态'] =='已支付')]
date_concat_sss1=date_concat_sss1[(date_concat_sss1['售后状态'] != '退款成功')&(date_concat_sss1['售后状态'] !='退款完成')&(date_concat_sss1['售后状态'] !='已全额退款')&(date_concat_sss1['售后状态'] !='(锁定)等待确认收货')&(date_concat_sss1['售后状态'] !='(删除)等待出库')&(date_concat_sss1['售后状态'] !='(删除)等待确认收货')&(date_concat_sss1['售后状态'] !='售后完成')]
res_z=date_concat_sss1.groupby([date_concat_sss1['日期'],date_concat_sss1['平台'],date_concat_sss1['渠道']],as_index=False).agg(销售额=('订单应付金额','sum'),单量=('商品数量','count'))
re_td_sale=date_concat_td['退款金额'].groupby([date_concat_td['日期'],date_concat_td['平台'],date_concat_td['渠道']]).sum()
re=pd.merge(res_z,re_td_sale,on=['日期','平台','渠道'],how='left')
re.fillna(0,inplace=True)
re['总销售额']=re['销售额']+re['退款金额']
re.to_excel(r'G:\结果\抖音各渠道销售情况.xlsx')

'''
#判定星分，达人，自然
def n(x,y,z,w):
    if 'zs2' in z:
        return '代播'
    elif 'zs' in z:
        return '代播'
    elif x=='宛禾食品旗舰店直播间' :
        return '代播'
    elif x=='宛禾速食旗舰店自播间':
        return '代播'
    elif x=='宛禾米线官方旗舰店' or ('z1' in z)  or ('Z1' in z):
        return '自播间1.0'
    elif x=='宛禾米线速食官方旗舰店'  or x=='宛禾米线' or x=='宛禾速食官方旗舰店' or x=='宛禾速食直播间'  or x=='宛禾速食' or ('z3' in z)  or ('Z3' in z):
        return '自播间3.0'
    elif  ('wzm' in z) :
        return '窝子面直播间'
    elif x=='宛禾食品旗舰店' or ('z5' in z)  or ('Z5' in z):
        return '自播间5.0'
    elif x=='宛禾速食旗舰店' or x=='宛禾食品旗舰店甄选号' or ('z6' in z)  or ('Z6' in z):
        return '自播间6.0'
    elif x=='宛禾官方旗舰店' or ('z8' in z)  or ('Z8' in z) :
        return '自播间8.0'
    elif x=='宛禾米线速食旗舰店' or ('lsf' in z)  :
        return '螺蛳土豆粉直播间'
    elif w=='抖音1' and ('dsp' in z) :
        return '自播间1.0'
    elif w=='抖音2' and ('dsp' in z) :
        return '自播间5.0'
    elif w=='抖音3' and ('dsp' in z) :
        return '自播间8.0'
    elif w=='抖音4' and ('dsp' in z) :
        return '螺蛳土豆粉直播间'
    elif pd.notnull(x):
        return '达人'
    elif pd.isnull(x) and y=='-':
        return '自然单'
    elif pd.isnull(x) and y=='小店自卖':
        return '自然单'
    else:
        return '其他'

date_concat_ss['渠道']=list(map(n,list(date_concat_ss['达人昵称']),list(date_concat_ss['流量来源']),list(date_concat_ss['选购商品']),list(date_concat_ss['平台'])))
#提取各渠道销量前3的商品ID

result_1=date_concat_sss.groupby([date_concat_sss['平台'],date_concat_sss['渠道'],date_concat_sss['商品ID']],as_index=False).agg(销售额=('订单应付金额','sum'),单量=('商品数量','count'))
res=result_1.sort_values(['平台','渠道','单量'],ascending=[True,True,False])
res_1=res.groupby(['平台','渠道']).head(3)

#提取各渠道商品ID销量最高的SKU

l=pd.concat([l1,l2])
res_l=l.loc[:,['商品编码','曝光点击率（人数）','点击支付率（人数）']]
res_l.columns=['商品ID','曝光点击率（人数）','点击支付率（人数）']
result_2=date_concat_sss.groupby([date_concat_sss['平台'],date_concat_sss['渠道'],date_concat_sss['商品ID'],date_concat_sss['商家编码']],as_index=False).agg(销售额=('订单应付金额','sum'),单量=('商品数量','count'))
res=result_2.sort_values(['平台','渠道','商品ID','单量'],ascending=[True,True,False,False])
res_2=res.groupby(['平台','渠道','商品ID']).head(1)
res_3=pd.merge(res_1,res_2,on=['平台','渠道','商品ID'])

#达人
result_daren=date_concat_sss[date_concat_sss['渠道']=='达人']
result_daren1=result_daren.groupby([result_daren['平台'],result_daren['渠道'],result_daren['商品ID'],result_daren['达人昵称']],as_index=False).agg(单量=('商品数量','count'))
res=result_daren1.sort_values(['平台','渠道','商品ID','单量'],ascending=[True,True,False,False])
res_5=res.groupby(['平台','渠道','商品ID']).head(3)
res_5=res_5.groupby(['平台','渠道','商品ID'],as_index=False).agg(流量渠道=('达人昵称','sum'))

#达人自然单
result_ziran=date_concat_sss[date_concat_sss['渠道']=='自然单']

result_ziran1=result_ziran.groupby([result_ziran['平台'],result_ziran['渠道'],result_ziran['商品ID'],result_ziran['流量渠道']],as_index=False).agg(单量=('商品数量','count'))
res=result_ziran1.sort_values(['平台','渠道','商品ID','单量'],ascending=[True,True,False,False])
res_6=res.groupby(['平台','渠道','商品ID']).head(1)
res_4=pd.concat([res_5,res_6])

res_8=pd.merge(res_3,res_4,on=['平台','渠道','商品ID'],how='left')

res_s=pd.merge(res_8,res_l,on=['商品ID'],how='left')
res_s.to_excel(r'G:\结果\各渠道销量前三商品ID明细表-.xlsx')



#佣金单
y1_date=y1.loc[:,['作者账号','支付金额','订单状态','佣金率','计划类型','商品数量']]
y1_date=y1_date[(y1_date['作者账号']!='宛禾米线速食官方旗舰店') & (y1_date['作者账号']!='河南（宛禾）麻酱米线') & (y1_date['作者账号']!='（宛禾）老式砂锅土豆粉') & (y1_date['作者账号']!='河南【宛禾】麻酱米线') & (y1_date['作者账号']!='宛禾食品旗舰店直播间') & (y1_date['作者账号']!='宛禾米线官方旗舰店') & (y1_date['作者账号']!='河南「宛禾」麻酱米线') & (y1_date['作者账号']!='【宛禾】老式砂锅土豆粉') &
                (y1_date['作者账号']!='（宛禾）砂锅土豆粉【免费试吃】') & (y1_date['作者账号']!='【宛禾】老式砂锅土豆粉【免费试吃】') & (y1_date['作者账号']!='【宛禾】砂锅土豆粉（免费试吃）') & (y1_date['作者账号']!='宛禾砂锅土豆粉【全国可发】') & (y1_date['作者账号']!='（宛禾）砂锅土豆粉〖免费试吃〗') & (y1_date['作者账号']!='〖宛禾〗老式砂锅土豆粉') & (y1_date['作者账号']!='河南【宛禾】砂锅土豆粉') ]
y1_date['佣金']='佣金1'
y2_date=y2.loc[:,['作者账号','支付金额','订单状态','佣金率','计划类型','商品数量']]
y2_date['佣金']='佣金2'

y_date=pd.concat([y1_date,y2_date])

y_date=y_date[(y_date['订单状态'] == '订单付款') | (y_date['订单状态'] == '订单收货')]
result_y=y_date['订单状态'].groupby(y_date['佣金']).count()
print(result_y)



#筛选自然单
zr_date=date_concat_sss[date_concat_sss['渠道']=='自然单']
#自然单各渠道 单量
zr_date['自然单渠道']=np.where((zr_date['流量类型']=='广告') & (zr_date['流量体裁'] == '商品卡'),'付费渠道',zr_date['流量渠道'])
zr_dl=zr_date.groupby([zr_date['平台'],zr_date['自然单渠道']]).count()[['商品数量']]
zr_dl1=zr_date.groupby([zr_date['商品ID']]).count()[['商品数量']]
zr_dl.to_excel(r'G:\结果\各渠道自然单量.xlsx')
zr_dl1.to_excel(r'G:\结果\各ID自然单量.xlsx')
#自然单 单量>30 的商品ID
zr_dlID_1=zr_date.groupby([zr_date['平台'],zr_date['商品ID']],as_index=False).agg(单量=('商品数量','count'),销售额=('订单应付金额','sum'))
#zr_dlID_1=zr_dlID_1.sort_values(['平台','商品ID','单量'],ascending=[True,False,False])
zr_dlID_2=zr_date.groupby([zr_date['平台'],zr_date['商品ID'],zr_date['商家编码']],as_index=False).agg(单量=('商品数量','count'),销售额=('订单应付金额','sum'))
#zr_dlID_2=zr_dlID_2.sort_values(['平台','商品ID','商家编码','单量'],ascending=[True,False,False,False])
zr_dlID=pd.merge(zr_dlID_1,zr_dlID_2,on=['平台','商品ID'],how='right')
zr_dlID=zr_dlID.sort_values(['平台','单量_x','商品ID','单量_y'],ascending=[True,False,False,False])
zr_dlID=zr_dlID[zr_dlID['单量_x']>=30]

zr_dlID.to_excel(r'G:\结果\自然单商品ID大于30-.xlsx')



#招商
z1_date=z1.loc[:,['订单状态','出单机构']]   
z2_date=z2.loc[:,['订单状态','出单机构']]

zs_date=pd.concat([z1_date,z2_date])
zs_date=zs_date[zs_date['订单状态'] != '订单退货退款']
result_zs=zs_date.groupby(zs_date['出单机构']).count()
w1=int(input('抖1定向达人%5订单:'))
w2=int(input('抖1定向达人大于%5订单:'))
w3=int(input('抖2定向达人%5订单:'))
#a={'出单机构':'宛禾总部','订单状态':w1+w2+w3}
a=[w1+w2+w3]
new_d=pd.DataFrame(a,index=['宛禾总部'],columns=['订单状态'])
zs_date1=pd.concat([result_zs,new_d])

#result_zs.append(new_d,ignore_index=True)
zs_date1.to_excel(r'G:\结果\招商.xlsx')

'''